package com.epro.dx.task;

import com.epro.dx.activity.LoginActivity;
import com.epro.dx.listenner.OnLoginSuccessedListenner;
import com.epro.dx.util.AsyncTaskUtil;
import com.epro.dx.util.LoginUtilTask;
import com.weipu.common.constants.ServerConstant;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.text.TextUtils;

/************************
 * @author Tony
 * @Date:2016-5-24上午11:51:24
 * @描述:用于供需要使用到Token的接口任务继承，解决Token失效带来的隐患
 * @see 所有子类在覆盖onPostExecute方法时，要先调用本父类的onPostExecute方法，否则会出错
 ************************/
public abstract class BaseNeedReLoginTask extends AsyncTask<Void, Void, String> {

	protected boolean isRelogin = false;
	@Override
	protected String doInBackground(Void... params) {
		return null;
	}
	/**
	 * 所有子类要先调用此父类方法，否则会出现错误
	 */
	@Override
	protected void onPostExecute(String result) {
		//TODO 所有子类要先调用此父类方法，否则会出现错误
		if(!TextUtils.isEmpty(result)){
			if("DMS100002".equals(result)){
				//需要重新登录
				isRelogin = true;
				LoginUtilTask loginTask = new LoginUtilTask(loginListenner, setContext(), true);
				AsyncTaskUtil.executeTask(loginTask);
			}
		}
	}
	/**
	 * @创建：Tony 2016-5-23下午4:41:30
	 * @描述：设置上下文
	 * @param mContext
	 */
	protected abstract Context setContext();
	/**
	 * @创建：Tony 2016-5-23下午4:41:45
	 * @描述：设置后台重新登录后需要执行的任务
	 * @param myTask
	 */
	protected abstract BaseNeedReLoginTask setTask();
	
	private OnLoginSuccessedListenner loginListenner = new OnLoginSuccessedListenner() {
		
		@Override
		public void onLoginSuccesed() {
			//登录成功
			isRelogin = false;
			AsyncTaskUtil.executeTask(setTask());
		}
		
		@Override
		public void onLoginFailed() {
			//登录失败跳转登录页面
			Intent intent=new Intent(setContext(), LoginActivity.class);
			intent.putExtra(ServerConstant.Parameter.PARAMETER_NAME_LOGIN_ACTION_TYPE, ServerConstant.Parameter.PARAMETER_ACTION_TYPE_AUTO_LOGIN_FAIL);
			setContext().startActivity(intent);
		}
	};
}
